import type { Router } from 'vue-router'
import { useUserStorage } from '@/stores/user.ts'
import { ElMessage } from 'element-plus'
import { getToken } from '@/utils/localStorageUtil.ts'

// 白名单，未登录用户可以访问
const whiteList: Array<string | RegExp> = ['/', '/login']

const whiteListTest = (path: string) => {
  return whiteList.some((o) => {
    if (o instanceof RegExp) {
      return o.test(path)
    } else {
      return o === path
    }
  })
}

const createPermission = (router: Router) => {
  router.beforeEach((to, from, next) => {
    const userStorage = useUserStorage()

    //不是白名单 或者 用户已登录
    if (whiteListTest(to.path) || userStorage.isLogin) {
      //用户已登录
      next()
    } else {
      next()
      // const token = getToken()
      // if (!token) {
      //   //如果没有token，提示未登录，存在token有可能浏览器刷新导致
      //   //websocket连接断开，重新连接
      //   ElMessage.error('未登录,请先登录')
      // }
      // //否则一律打到登录页面
      // userStorage.currentPath = to.path
      // //未登录，返回登录页面
      // return next({ path: '/login', replace: true })
      // next()
    }
  })

  // 全局路由后置守卫
  router.afterEach((to, from) => {
    // 动态设置页面 Title
    const title = (to.meta.title ? to.meta.title : '') + ' -chatNote'
    document.title = title
  })
}

export default createPermission
